"""
    编写一段程序，实现下述需求
"""

# 题1：找出列表中出现次数最多的元素
"""
例如：
    输入：a = [1,2,1,2,23,4,41,2,10] , 0<= a <= 100
    输出：3
"""
# a = [1,2,1,2,23,4,41,2,10]
# max = 0     # 记录的是列表元素出现最多的次数
#
# for i in range(0,101):
#     temp = a.count(i)   #temporary
#     if temp > max:
#         max = temp
# print(max)

# 题2：2022年蓝桥杯程序设计PythonB组填空题
"""
小蓝要把一个字符串的字母按照其在字母表中的顺序排序
例如：
输入：LANQIAO，输出：AAILNOQ
输入：GOODGOODSTUDYDAYDAYUPUP，输出：AADDDDGGOOOOPPSTUUYYY
"""

list_str = list(input("输入一个字符串"))
list_str.sort()
print("".join(list_str))
# 思考：列表中字符串的排序是按照原则 → a-z A-Z

# 题3：列表元素右移k位(k>0)
"""
    a = [3,1,4,5,2],k=2
    b = [5,2,3,1,4]
"""
# k=1 , [3,1,4,5,2] → [2,3,1,4,5]
# k=2 , [3,1,4,5,2] → [5,2,3,1,4]
# k=3 , [3,1,4,5,2] → [4,5,2,3,1]

# 推导(1)：倒数k个数： a[len(a) -k:] / a[-k:]
# k=1, 倒数1个数, a[4:] / a[-1:]
# k=2, 倒数2个数, a[3:] / a[-2:]
# k=3，倒数3个数, a[2:] / a[-3:]

# 推到(2): 剩余元素: a[:len(a)-k] / a[:-k]
# k=1, [3,1,4,5] , a[:4] / a[:-1]
# k=2, [3,1,4] ,   a[:3] / a[:-2]
# k=3, [3,1]       a[:2] / a[:-3]

a = [3, 1, 4, 5, 2]
k = 2
b = []
# (1) 将a中倒数k个数先移动到b列表中

# (2) 将a中剩余元素再移动到b列表中

# (3)将（1）+ （2）
b = a[-k:] + a[:-k]
print(b)

# 题4：计算连续数字的累加和
"""
例如：
输入：a = [1,2,3,4], 输出：b = [1,3,6,10]
输入：a = [2,3,1,2], 输出：b = [2,5,6,8]
"""

# a 和 b 列表的元素个数是一致的
# b列表第n个元素是a列表中前n个元素相加

# i=0,第1次向b列表添加元素：a列表中前1个元素相加,[1],       a[:1]
# i=1,第2次向b列表添加元素：a列表中前2个元素相加,[1,2]      a[:2]
# i=2,第3次向b列表添加元素：a列表中前3个元素相加,[1,2,3]    a[:3]
# i=3,第4次向b列表添加元素：a列表中前4个元素相加,[1,2,3,4]  a[:4]

# 结论：要进行相加的n个元素的列表切片：a[:i+1]

# 执行 len(a) 次向b列表中添加a列表前n个元素相加的结果
a = [2, 3, 1, 2]
b = []
# 方法一：
for i in range(0, len(a)):   # (0至len(a)-1)
    b.append(sum(a[:i+1]))
print(b)

# 方法二：
# i=0,第1次向b列表添加元素：a列表中前1个元素相加 2 （0，0）
# i=1,第2次向b列表添加元素：a列表中前2个元素相加 2 + 3 （0，1）
# i=2,第3次向b列表添加元素：a列表中前3个元素相加 2 + 3 + 1 （0，1，2）
# i=3,第4次向b列表添加元素：a列表中前4个元素相加 2 + 3 + 1 +2 （0，1，2，3）

a = [2, 3, 1, 2]
b = []
for i in range(0, len(a)):
    sum = 0
    for j in range(0, i+1):
        sum = sum + a[j]  # sum += a[j]
    b.append(sum)
print(b)

# 题5：去除相邻重复元素
"""
输入：a = [1,1,2,2,2,3,1,1],输出：b = [1,2,3,1]
"""
a = [1, 2, 2, 3, 1, 1, 2, 3, 1, 2, 3]
b = [a[0]]
# 从第二个元素开始，依次向左边元素进行比较，如果不相同，添加到b列表中，否则跳过此元素
# for i in a: #迭代a列表，从列表的第一个元素开始

# 思路：通过索引访问列表指定范围的元素：1 到 len(a)-1
for i in range(1, len(a), 1):
    # 从列表的第一个元素开始，与左边元素进行比较
    if a[i] == a[i-1]:
        continue
    else:
        b.append(a[i])
print(b)
